/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._893;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

/**
 *
 * 现在规定，A 中的特殊等价字符串组是 A 的非空子集 S，这样不在 S 中的任何字符串与 S 中的任何字符串都不是特殊等价的。
 *
 * 返回 A 中特殊等价字符串组的数量。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：["a","b","c","a","c","c"]
 * 输出：3
 * 解释：3 组 ["a","a"]，["b"]，["c","c","c"]
 * 示例 2：
 *
 * 输入：["aa","bb","ab","ba"]
 * 输出：4
 * 解释：4 组 ["aa"]，["bb"]，["ab"]，["ba"]
 * 示例 3：
 *
 * 输入：["abc","acb","bac","bca","cab","cba"]
 * 输出：3
 * 解释：3 组 ["abc","cba"]，["acb","bca"]，["bac","cab"]
 * 示例 4：
 *
 * 输入：["abcd","cdab","adcb","cbad"]
 * 输出：1
 * 解释：1 组 ["abcd","cdab","adcb","cbad"]
 *  
 *
 * 提示：
 *
 * 1 <= A.length <= 1000
 * 1 <= A[i].length <= 20
 * 所有 A[i] 都具有相同的长度。
 * 所有 A[i] 都只由小写字母组成。
 *
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._893
 * @ClassName: GroupsOfSpecial
 * @Author: linyaonan
 * @Date: 2020/1/6 17:13
 */
public class GroupsOfSpecial {

    public int numSpecialEquivGroups(String[] A) {
        HashSet<String> set = new HashSet<>();
        for (String s : A) {
            List<String> l1 = new ArrayList<>();
            List<String> l2 = new ArrayList<>();
            for (int i = 0; i < s.toCharArray().length; i++) {
                if (i % 2 == 0) {
                    l1.add(String.valueOf(s.charAt(i)));
                } else {
                    l2.add(String.valueOf(s.charAt(i)));
                }
            }
            Collections.sort(l1);
            Collections.sort(l2);
            String t = String.join("", l1) + String.join("", l2);
            set.add(t);
        }
        return set.size();
    }
}
